<?php

/**
 * @copyright 2011
 * @version $Id$
 * @access public
 * @author Oriotiori

 */

class Admin_SettingsController extends Zend_Controller_Action
{
    public function init()
    {
        $this->view->ActiveSection='settings';
        $this->view->module=$this->_request->getParam('module');
    }

/**
 * Agregar nuevo usuario
 */
    public function indexAction()
    {
        $to= new Admin_Model_TO_User();
        $facadeSettings= new Admin_Model_Facade_Settings();
        $facadeUser= new Admin_Model_Facade_User();
        $form= new Admin_Form_addusersForm();
        $imageHandler=new Admin_Model_Facade_ImageHandler();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $error=array();

        $userId=(int)$this->getRequest()->getParam('userId', 0);
        $to->setId($userId);

/** si dimos click al boton de submit */
        if($this->_request->isPost())
        {
            if($form->isValid($this->_request->getPost()))
            {
                $data=$this->_request->getPost();
                
                $to->setRoleId($data['role']);
                $to->setPassword($data['password']);
                $to->setRepassword($data['repassword']);
                $to->setUsername($data['name']);
                $to->setFullname($data['fullname']);
                $to->setEmail($data['email']);
                $to->setSecciones($data['secciones']);
                $id_user=0;
                if($to->getId()==0){
/** Si la id del usario sea 0 entonces  agregamos un nuevo usuario */
                    if($to->getRepassword() != $to->getPassword())
                            $error[]="El password y confirmación del mismo coninciden, verifíque por favor.";
                    if($to->getUsername() == "")
                            $error[]="Debe escribir un nick de usuario correcto.";
                    if($to->getEmail() == "")
                            $error[]="Debe escribir un email válido.";
                    if($to->getFullname() == "")
                            $error[]="Debe escribir el nombre completo del usuario.";

                    if(empty($error)){
                        $id_user=$facadeUser->addNewUser($to->getAllVars());
                        if($id_user>0)
                        {
                            $to->setIdUser($id_user);
                            $id_picture=0;
                            if(!empty($_FILES['image_user']['name'])){
                                $id_picture=$imageHandler->AddUserFiles($form, $to->getAllVars());
                            }
                            $id_picture=(!$id_picture) ? 0 : $id_picture;
                            $to->setIdPicture($id_picture);

    /** Agregamos los nuevos datos del nuevo user y creamos los thumbnails  */
                            $facadeUser->addUserInformation($to->getAllVars());
                            $facadeUser->addUserPermisions($to->getAllVars());
                            $facadeUser->CreateUserThumb($to->getAllVars());
                            $facadeUser->CreateUserMedium($to->getAllVars());
                            $facadeUser->CreateUserMiniThumb($to->getAllVars());
                            $facadeUser->CreateUserBigThumb($to->getAllVars());

                            $error[]="Se ha agregado correctamente el nuevo usuario.";
                            $s_Sass->messageError = $error;
                            $this->_redirect($this->_request->getParam('module') .'/settings/viewusers/');

                        }else{
    /** Si existe un error entonces vamos a esta condicion*/
                            $existe=true;
                            $existe=$facadeUser->VerifyUserNoExist($to->getAllVars());
                            if($existe){
                                $error[]="Error: El usuario que intenta registrar ya se encuentra en uso";
                            }
                            $existe=true;
                            $existe=$facadeUser->VerifyEmailNoExist($to->getAllVars());
                            if($existe){
                                $error[]="Error: El email que intenta registrar ya se encuentra en uso.";
                            }

                            $s_Sass->messageError = $error;
                            $s_Sass->inputEntrance=$to->getAllVars();
                            $this->_redirect($this->_request->getParam('module') .'/settings/');
                        }
                    }
                    $s_Sass->messageError = $error;
                    $this->_redirect($this->_request->getParam('module') .'/settings/');
                    
                }
                else{
/** si esta definida la Id del usuario  entonces actualizamos la info de este */
                    
                    $existe=true;
                    $error=array();

        /** Si la id del usario sea 0 entonces  agregamos un nuevo usuario */
                            if($to->getRepassword() != $to->getPassword())
                                    $error[]="El password y confirmación del mismo coninciden, verifíque por favor.";
                            if($to->getUsername() == "")
                                    $error[]="Debe escribir un nick de usuario correcto.";
                            if($to->getEmail() == "")
                                    $error[]="Debe escribir un email válido.";
                            if($to->getFullname() == "")
                                    $error[]="Debe escribir el nombre completo del usuario.";



                    if(empty($error)){
                        $to->setIdUser($to->getId());
                        
                        if($facadeUser->updateDataUser($to->getAllVars())){
                            $id_picture=0;

                            if(!empty($_FILES['image_user']['name'])){
                                $id_picture=$imageHandler->AddUserFiles($form, $to->getAllVars());
                                $id_picture=(!$id_picture) ? 0 : $id_picture;
                            }
                            $to->setIdPicture($id_picture);

    /** Actualizamos los datos del user y creamos los thumbnails  */
                            $facadeUser->updateUserInformation($to->getAllVars());
                            $facadeUser->updateUserPermisions($to->getAllVars());

                            if($to->getIdPicture()>0){
                                $facadeUser->CreateUserThumb($to->getAllVars());
                                $facadeUser->CreateUserMedium($to->getAllVars());
                                $facadeUser->CreateUserMiniThumb($to->getAllVars());
                                $facadeUser->CreateUserBigThumb($to->getAllVars());
                            }

                            $error[]="Se han actualizado correctamente los datos del usuario.";
                            $s_Sass->messageError = $error;
                            $this->_redirect($this->_request->getParam('module') .'/settings/viewusers/');
                            
                        }
                        else{
    /** Si existe un error entonces vamos a esta condicion*/
                            $existe=true;
                            $existe=$facadeUser->VerifyUserNoExist($to->getAllVars());
                            if($existe){
                                $error[]="Error: El nick de usuario que intenta registrar ya se encuentra en uso";
                            }
                            $existe=true;
                            $existe=$facadeUser->VerifyEmailNoExist($to->getAllVars());
                            if($existe){
                                $error[]="Error: El email que intenta usar ya se encuentra en uso.";
                            }

                            $s_Sass->messageError = $error;
                            $s_Sass->inputEntrance=$to->getAllVars();
                            $this->_redirect($this->_request->getParam('module') .'/settings/?userId='.$to->getId());
                            
                        }
                        
                    }

                    $s_Sass->messageError = $error;
                    $this->_redirect($this->_request->getParam('module') .'/settings/?userId='.$to->getId());
                }
            }
        }
        
        if (!empty($s_Sass->messageError))
        {
            $this->view->messageError = $s_Sass->messageError;
            $s_Sass->messageError="";
        }

        if($to->getId() > 0){
 /** Obtenemos la info de un usuario en base  a su ID*/
            $infouser=$facadeUser->getUserInformationById($to->getId());
            $s_Sass->inputEntrance=$infouser[0];
        }
        
        $form= new Admin_Form_addusersForm(isset($infouser[0]) ? $infouser[0] : (isset($s_Sass->inputEntrance) && is_array($s_Sass->inputEntrance) )? $s_Sass->inputEntrance : null );
        $this->view->Roles=$facadeSettings->getRoles();
        
        $this->view->Id=$to->getId();
        $this->view->Secciones=$facadeSettings->getSecciones_Administrables();
        $this->view->form=$form;


        if (!empty($s_Sass->inputEntrance))
        {
            $this->view->inputEntrance = $s_Sass->inputEntrance;
            $s_Sass->inputEntrance="";
        }

    }

/**
 * Ver lista de usuarios
 */
    public function viewusersAction()
    {
        $to= new Admin_Model_TO_User();
        $facadeUser= new Admin_Model_Facade_User();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $facadeSettings= new Admin_Model_Facade_Settings();

        if (!empty($s_Sass->messageError))
        {
            $this->view->messageError = $s_Sass->messageError;
            $s_Sass->messageError="";
        }

        $this->view->Secciones=$facadeSettings->getSecciones_Administrables();
        $this->view->Users=$facadeUser->getUsers();

    }

/**
 * Elimina un user en base a su ID
 */
    public function deleteuserAction()
    {
        $to= new Admin_Model_TO_User();
        $facadeUser= new Admin_Model_Facade_User();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $facadeSettings= new Admin_Model_Facade_Settings();

/**
 * No render, no layout
 */
        $this->getHelper('viewRenderer')->setNoRender();
        $this->_helper->layout->disableLayout();

        $error=array();

        $userId=(int)$this->getRequest()->getParam('userId', 0);
        $to->setId($userId);

        if($to->getId() > 0){
 /** Obtenemos la info de un usuario en base  a su ID*/
            $infouser=$facadeUser->getUserInformationById($to->getId());
            if(is_array($infouser)){
                if($facadeUser->deleteUserById($infouser[0])){
                    $error[]="Se ha eliminado correctamente al usuario.";
                }
            }
            else
                $error[]="El usuario que intenta eliminar no existe.";
        }
        else
            $error[]="Error: Debe elegir un usuario a eliminar.";

        $s_Sass->messageError = $error;
        $this->_redirect($this->_request->getParam('module') .'/settings/viewusers/');
    }

/**
 * cambia el status de un usuario
 */
    public function statuschangeAction()
    {
        $to= new Admin_Model_TO_User();
        $facadeUser= new Admin_Model_Facade_User();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
/**
 * No render, no layout
 */
        $this->getHelper('viewRenderer')->setNoRender();
        $this->_helper->layout->disableLayout();

        $error=array();

        $userId=(int)$this->getRequest()->getParam('userId', 0);
        $status=(int)$this->getRequest()->getParam('status', 0);

        $to->setId($userId);
        $to->setStatus($status);

        if($to->getId() > 0){
 /** Obtenemos la info de un usuario en base  a su ID*/
            $infouser=$facadeUser->getUserInformationById($to->getId());
            if(is_array($infouser)){
                if($facadeUser->changeStatusUserById($to->getAllVars())){
                    $error[]="Se ha cambiado el status del usuario correctamente.";
                }
            }
            else
                $error[]="Error: el usuario que intenta cambiar de status no existe.";
        }
        //$s_Sass->messageError = $error;
    }

/**
 * Seccion de banners
 */

/**
 * Ver lista de banners
 */
    public function viewbannersAction()
    {
        $to=new Admin_Model_TO_Banner();
        $facadeBanner= new Admin_Model_Facade_Banner();
        $imageHandler= new Admin_Model_Facade_ImageHandler();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $form= new Admin_Form_bannerimagesForm();
        $bannerId=(int)$this->getRequest()->getParam('bannerId', 0);        
        $to->setSeccion(1);
        $to->setId($bannerId);
        $infobanner=false;
        $error=array();
        

/** si dimos click al boton de submit */
        if($this->_request->isPost())
        {
            if($form->isValid($this->_request->getPost()))
            {
                $data=$this->_request->getPost();

                $to->setIdSeccion($data['seccion']);
                $to->setPosition($data['position']);
                $to->setTexto($data['texto']);
                
                if($to->getPosition()=="")
                    $error[]="Error: Debe elegir una posición para este banner";
                
                if(empty($error)){
                    if($to->getId()==0){

    /** Si la id del banner sea 0 entonces  agregamos un nuevo banner */
                        $id_picture=0;
                        if(!empty($_FILES['image_banner']['name'])){
                            $id_picture=$imageHandler->AddBanners($form, $to->getAllVars());
                        }
                        $id_picture=(!$id_picture) ? 0 : $id_picture;

                        if($id_picture > 0){
                            $to->setIdPicture($id_picture);
                            $facadeBanner->AddBanner($to->getAllVars());

        /** Agregamos los nuevos datos del nuevo banner y creamos los thumbnails  */
                            $facadeBanner->CreateBannerMedium($to->getAllVars());
                            $facadeBanner->CreateBannerThumb($to->getAllVars());
                            $facadeBanner->CreateBannerMiniThumb($to->getAllVars());

                            $error[]="Se ha agregado correctamente el nuevo banner";
                        }
                        else
                            $error[]="Error: debe elegir una imagen a subir como nuevo banner";
                    }
                    else{
    /** si esta definida la Id del banner  entonces actualizamos la info de este */
                        $id_picture=0;
                        if(!empty($_FILES['image_banner']['name'])){
                            $id_picture=$imageHandler->AddBanners($form, $to->getAllVars());
                        }
                        $id_picture=(!$id_picture) ? 0 : $id_picture;

    /** Actualizamos los datos del banner y creamos los thumbnails  */
                        $to->setIdPicture($id_picture);
                        $facadeBanner->UpdateBanner($to->getAllVars());
                        
                       if($to->getIdPicture() > 0){
     /** Agregamos los nuevos datos del nuevo banner y creamos los thumbnails  */
                            $facadeBanner->CreateBannerMedium($to->getAllVars());
                            $facadeBanner->CreateBannerThumb($to->getAllVars());
                            $facadeBanner->CreateBannerMiniThumb($to->getAllVars());
                        }
                        $error[]="Se ha modificado correctamente el banner";
                    }
                }
                $s_Sass->messageError = $error;
                $this->_redirect($this->_request->getParam('module') .'/settings/viewbanners/');
            }

        }

        if (!empty($s_Sass->messageError))
        {
            $this->view->messageError = $s_Sass->messageError;
            $s_Sass->messageError="";
        }

        if($to->getId() > 0){
            $infobanner=$facadeBanner->getBannerById($to->getAllVars());
        }

        $this->view->banner_list=$facadeBanner->getBannerList($to->getAllVars());
        $this->view->secciones=$facadeBanner->getSecciones();
        $this->view->banner=$facadeBanner->getBannerById($to->getAllVars());
        $this->view->form=$form;
    }
/**
 * Elimina un banner
 */
    public function deletebannerAction()
    {
        $to= new Admin_Model_TO_Banner();
        $facadeBanner= new Admin_Model_Facade_Banner();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $error=array();
/**
 * No render, no layout
 */
        $this->getHelper('viewRenderer')->setNoRender();
        $this->_helper->layout->disableLayout();

        $bannerId=(int)$this->getRequest()->getParam('bannerId', 0);
        $to->setId($bannerId);
        $to->setSeccion(1);

        if($to->getId() > 0){
 /** Obtenemos la info de un banner en base  a su ID*/
            $infobanner=$facadeBanner->getBannerById($to->getAllVars());
            if(is_array($infobanner)){

                if($facadeBanner->deleteBannerById($infobanner[0])){
                    $error[]="Se ha eliminado correctamente el banner.";
                }
            }
            else
                $error[]="El banner que intenta eliminar no existe.";
        }
        else
            $error[]="Error: Debe elegir un banner a eliminar.";

        $s_Sass->messageError = $error;
        $this->_redirect($this->_request->getParam('module') .'/settings/viewbanners/');

    }


/**
 * Ver imagen de la compañia
 */
    public function viewcompanyimageAction()
    {
        $to=new Admin_Model_TO_Settings();
        $facadeLogoCompany= new Default_Model_Facade_Index();
        $facadeLogo= new Admin_Model_Facade_Logo();
        $imageHandler= new Admin_Model_Facade_ImageHandler();
        $s_Sass = new Zend_Session_Namespace('s_Sass');
        $form= new Admin_Form_bannercompanyForm();
        
        $bannerId=(int)$this->getRequest()->getParam('idimage', 0);
        $to->setId($bannerId);
        $to->setSeccion(1);

/** si dimos click al boton de submit */
        if($this->_request->isPost())
        {
            
            if($form->isValid($this->_request->getPost()))
            {
                $data=$this->_request->getPost();
                
                if($to->getId()>0){
/** Si la id del usario sea 0 entonces  continuamos  */
                        if(!empty($_FILES['logo_company']['name'])){
                            $id_picture=$imageHandler->AddLogoCompany($form, $to->getAllVars());
                            $id_picture=(!$id_picture) ? 0 : $id_picture;
                            $to->setIdPicture($id_picture);
                        }
                        if($to->getIdPicture()>0){
                            $facadeLogo->AddLogoCompany($to->getAllVars());
                            $facadeLogo->CreateLogoThumb($to->getAllVars());
                            $facadeLogo->CreateLogoMedium($to->getAllVars());
                            $error[]="Se ha modificado la imagen de logo principal correctamente.";
                        }
                        

                        $s_Sass->messageError = $error;
                        $s_Sass->inputEntrance=$to->getAllVars();
                        $this->_redirect($this->_request->getParam('module') .'/settings/viewcompanyimage/');
                }
            }
        }
        
        if (!empty($s_Sass->messageError))
        {
            $this->view->messageError = $s_Sass->messageError;
            $s_Sass->messageError="";
        }

        $to->setSeccion(1);
        $this->view->logocompany= $facadeLogoCompany->getLogoEmpresa();
        $this->view->form=$form;
        $this->view->Id=$to->getId();
    }


}
